/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package model.dao;

import lib.*;
import model.dao.vo.*;

import java.sql.*;
import java.util.*;

/**
 *
 * @author felipe
 */
public class CategoriaDAO extends DAO {

    public CategoriaDAO()
    {
        super();
    }

    public Iterator<CategoriaVO> listaCategoria(CategoriaVO categoria)
    {
        SQL sql = Factory.createSQL();
        sql = sql.select("categoria_nome")
                .from("categoria")
                .where("categoria_nome LIKE '%" + categoria.getNome() + "%'");
        ResultSet rs = this.db.Execute(sql.toString());
        try
        {
            if ( ! rs.wasNull() )
            {
                List<CategoriaVO> categorias = new ArrayList<CategoriaVO>();
                while(rs.next())
                {
                    CategoriaVO c = new CategoriaVO();
                    c.setId(rs.getInt("categoria_id"));
                    c.setNome(rs.getString("categoria_nome"));
                    categorias.add(c);
                }

                if ( ! categorias.isEmpty()){
                    return (Iterator<CategoriaVO>) categorias.iterator();
                }
            }
        }
        catch( SQLException e )
        {
            ErrorLog.SQLLog("Error listaCategoria method " , e);
        }
        return null;
    }
    
    public CategoriaVO buscaCategoria(CategoriaVO categoria)
    {
        SQL sql = Factory.createSQL();
        sql = sql.select("categoria_nome")
                .from("categoria")
                .where("categoria_id = " + categoria.getId());
        ResultSet rs = this.db.Execute(sql.toString());
        try
        {
            if ( ! rs.wasNull() )
            {
                categoria.setId(rs.getInt("categoria_id"));
                categoria.setNome(rs.getString("categoria_nome"));
                return categoria;
            }
        }
        catch( SQLException e )
        {
            ErrorLog.SQLLog("Error Main method " , e);
        }
        return null;
    }

    public boolean insereCategoria(CategoriaVO categoria)
    {
        SQL sql = Factory.createSQL();
        sql = sql.insert()
                .into("categoria", "categoria_id, categoria_nome")
                .value("NULL, " + categoria.getNome());
        int sucess = this.db.Update(sql.toString());
        if (sucess > 0 ){
            return true;
        }
        return false;
    }

    public boolean alteraCategoria(CategoriaVO categoria)
    {
        SQL sql = Factory.createSQL();
        sql = sql.update("categoria")
                .set("categoria_nome = " + categoria.getNome())
                .where("categoria_id = " + categoria.getId() );
        int sucess = this.db.Update(sql.toString());
        if (sucess > 0 ){
            return true;
        }
        return false;
    }

    public boolean apagaCategoria(CategoriaVO categoria)
    {
        SQL sql = Factory.createSQL();
        sql = sql.delete("categoria")
                .where("categoria_id = " + categoria.getId());
        int sucess = this.db.Update(sql.toString());
        if (sucess > 0 ){
            return true;
        }
        return false;
    }

}
